package com.minimalist.tc.service;

import com.minimalist.common.config.mybatis.bo.PageResp;
import com.minimalist.common.entity.tc.entity.po.TcPlateNumber;
import com.minimalist.common.entity.tc.entity.vo.plateNumber.TcPlateNumberQueryVO;
import com.minimalist.common.entity.tc.entity.vo.plateNumber.TcPlateNumberVO;
import com.mybatisflex.core.service.IService;

/**
 * 停车车牌表 服务层。
 *
 * @author 11987
 * @since 2025-04-07
 */
public interface TcPlateNumberService extends IService<TcPlateNumber>{

    /**
     * 新增车牌
     *
     * @param plateNumberVO 车牌信息
     */
    void addPlateNumber(TcPlateNumberVO plateNumberVO);

    /**
     * 根据车牌ID删除车牌信息
     *
     * @param plateNumberId 车牌ID
     */
    void deletePlateNumberByPlateNumberId(Long plateNumberId);

    /**
     * 根据车牌ID更新车牌信息
     *
     * @param plateNumberVO 车牌信息
     */
    void updatePlateNumberByPlateNumberId(TcPlateNumberVO plateNumberVO);

    /**
     * 根据车牌ID查询车牌信息
     *
     * @param plateNumberId 车牌ID
     * @return 车牌信息
     */
    TcPlateNumberVO getPlateNumberByPlateNumberId(Long plateNumberId);

    /**
     * 查询车牌信息列表
     *
     * @param queryVO 查询条件
     * @return 车牌信息列表
     */
    PageResp<TcPlateNumberVO> getPagePlateNumberList(TcPlateNumberQueryVO queryVO);

    /**
     * 识别车牌信息
     *
     * @param count 识别数量
     */
    void insertPlateNumber(Integer count);

    /**
     * 识别有文件ID的车牌
     *
     * @param count 识别数量
     * @return 成功识别的数量
     */
    int recognizePlateNumberWithFileId(Integer count);
}
